home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 147
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin
/
fdimg
/
oh!.2hd
/
OH!DEN_B.LZH
/
TOOLS
/
KEYWITCH
/
KW_S200.LZH
/
w29tail.s
< prev
Wrap
Text File
|
1995-03-20
|
10KB
|
375 lines
.include w01dos.mac
.include w05reloc.mac
.include w08id.mac
.include w09mes.mac
.text
.even
********************************
*16進数文字をバイナリに変換
*<d0.b:'0'..'9'/'A'..'F'/'a'..'f'
*>d0.w:0..15/エラー=-1
chrhex::
sub.b #'0',d0
blo chrhex_err
cmp.b #'9'-'0',d0
bls chrhex_end
cmp.b #'A'-'0',d0
blo chrhex_err
subq.b #'A'-('9'+1),d0
cmp.b #'9'+1-'0'+'F'-'A',d0
bls chrhex_end
cmp.b #'9'+1-'0'+'a'-'A',d0
blo chrhex_err
sub.b #'a'-'A',d0
cmp.b #'9'+1-'0'+'f'-'a',d0
bls chrhex_end
chrhex_err::
st.b d0
chrhex_end::
ext.w d0
rts
********************************
*16進数2桁をバイナリに変換
*<a0.l:文字列のアドレス
*>d0.w:0..255/エラー=-1
*>a0.l:エラーなし=文字列の次のアドレス/エラー=不定
chrhex2::
move.b (a0)+,d0 *上位
bsr chrhex
bmi chrhex2_end
lsl.w #4,d0
move.w d0,-(sp)
move.b (a0)+,d0 *下位
bsr chrhex
or.w (sp)+,d0
chrhex2_end::
rts
********************************
*ファイル名と行番号を付けてエラーメッセージを表示する
*<d4.w:エラーメッセージの番号
*<d5.w:エラーカウンタ
*<d6.w:行番号
*<a3.l:ファイル名のアドレス
*>d5.w:エラーカウンタ(+1)
*?d0/a0
write_line_message::
addq.w #1,d5 *エラーカウントアップ
move.w d4,-(sp)
movea.l a3,a0
bsr write_string *ファイル名
moveq.l #M_COLON_SPACE,d4
bsr write_message
move.w d6,d0
bsr write_number *行番号
moveq.l #M_COLON_SPACE,d4
bsr write_message
move.w (sp)+,d4 *メッセージの番号
bra write_message
********************************
*数値を表示する
*<d0.w:数値(>0,<32768)
write_number::
movem.l d0-d3/a0,-(sp)
move.l #' '*256,-(sp)
move.w #' ',-(sp)
movea.l sp,a0
ext.l d0
moveq.l #0,d1
move.l #10000,d2
moveq.l #5-1,d3
write_number_lop::
divu.w d2,d0
or.w d0,d1
beq write_number_sup
add.b #'0',d0
move.b d0,(a0)
clr.w d0
write_number_sup::
addq.w #1,a0
swap.w d0
divu.w #10,d2
dbra d3,write_number_lop
move.l sp,a0
bsr write_string
addq.w #6,sp
movem.l (sp)+,d0-d3/a0
rts
********************************
*メッセージを表示する
*<d4.w:メッセージの番号(<0)
*?d0/a0
write_message::
move.w d4,d0
not.w d0
add.w d0,d0
move.w m_table(pc,d0.w),d0
lea.l m_table(pc,d0.w),a0
********************************
*文字列を表示する
*<a0.l:文字列のアドレス(ASCIIZ)
*?d0/a0
write_string::
move.l a0,d0
write_string_loop::
tst.b (a0)+
bne write_string_loop
subq.w #1,a0
suba.l d0,a0
movem.l d0/a0,-(sp)
move.w #1,-(sp)
DOS _WRITE
lea.l 10(sp),sp
rts
********************************
*メッセージのテーブル
m_table::
.dc.w m_aborted_by_key-m_table
.dc.w m_alart_rom_vector-m_table
.dc.w m_allocation_error-m_table
.dc.w m_already_exist-m_table
.dc.w m_already_kept-m_table
.dc.w m_ask_cannot_patch-m_table
.dc.w m_ask_cannot_recur-m_table
.dc.w m_ask_illegal_set-m_table
.dc.w m_ask_not_found-m_table
.dc.w m_ask_other_version-m_table
.dc.w m_cannot_open-m_table
.dc.w m_cannot_release-m_table
.dc.w m_cannot_release_device-m_table
.dc.w m_changed-m_table
.dc.w m_colon_space-m_table
.dc.w m_crlf-m_table
.dc.w m_duplicate_name-m_table
.dc.w m_duplicate_parameter-m_table
.dc.w m_environment_error-m_table
.dc.w m_file_read_error-m_table
.dc.w m_illegal_backslash-m_table
.dc.w m_illegal_caret-m_table
.dc.w m_illegal_character-m_table
.dc.w m_illegal_hz-m_table
.dc.w m_illegal_key_code-m_table
.dc.w m_illegal_dollar-m_table
.dc.w m_illegal_meta_char-m_table
.dc.w m_illegal_parameter-m_table
.dc.w m_kept-m_table
.dc.w m_memory_shortage-m_table
.dc.w m_missing_parameter-m_table
.dc.w m_missing_quote-m_table
.dc.w m_not_kept-m_table
.dc.w m_other_version-m_table
.dc.w m_other_version2-m_table
.dc.w m_released-m_table
.dc.w m_rule_not_binded-m_table
.dc.w m_syntax_error-m_table
.dc.w m_target_not_binded-m_table
.dc.w m_title-m_table
.dc.w m_too_long_chars-m_table
.dc.w m_too_long_file_name-m_table
.dc.w m_too_many_assign-m_table
.dc.w m_too_many_break-m_table
.dc.w m_too_many_char-m_table
.dc.w m_too_many_code-m_table
.dc.w m_too_many_copy-m_table
.dc.w m_too_many_den-m_table
.dc.w m_too_many_int-m_table
.dc.w m_too_many_lock-m_table
.dc.w m_too_many_meta-m_table
.dc.w m_too_many_names-m_table
.dc.w m_too_many_parameters-m_table
.dc.w m_too_many_prefix-m_table
.dc.w m_too_many_programs-m_table
.dc.w m_too_many_reset-m_table
.dc.w m_too_many_sbreak-m_table
.dc.w m_too_many_suffix-m_table
.dc.w m_too_many_unlock-m_table
.dc.w m_undefined_name-m_table
.dc.w m_unknown_command-m_table
.dc.w m_unknown_human-m_table
.dc.w m_unknown_switch-m_table
.dc.w m_unknown_patch_name-m_table
.dc.w m_usage-m_table
.data
********************************
*メッセージ
m_aborted_by_key::
.dc.b 'かなキーが押されているので処理を中止します',13,10,0
m_alart_rom_vector::
.dc.b '警告: ベクタが ROM アドレスに変更されていました',13,10,0
m_allocation_error::
.dc.b 'メモリが開放できません、速やかにリセットして下さい',13,10,0
m_already_exist::
.dc.b '既に組み込まれています',13,10,0
m_already_kept::
.dc.b '環境定義ファイルは変更できません',13,10,0
m_ask_cannot_patch::
.dc.b 'ASK68K の常駐部分が純正と異なります、変更できません',13,10,0
m_ask_cannot_recur::
.dc.b 'ASK68K の常駐部分が変化しています、解除できません',13,10,0
m_ask_illegal_set::
.dc.b 'パッチネーム n-n と tsu-n は同時に指定できません',13,10,0
m_ask_not_found::
.dc.b 'ASK68K が組み込まれていません',13,10,0
m_ask_other_version::
.dc.b 'ASK68K のバージョンが 3.01/3.02 ではありません',13,10,0
m_cannot_open::
.dc.b ' が見つかりません',13,10,0
m_cannot_release::
.dc.b 'ベクタが変更されています、解除できません',13,10,0
m_cannot_release_device::
.dc.b 'デバイスドライバとして組み込まれています、解除できません',13,10,0
m_changed::
.dc.b '設定を変更しました',13,10,0
m_colon_space::
.dc.b ': ',0
m_crlf::
.dc.b 13,10,0
m_duplicate_name::
.dc.b 'キーネームが二重定義されています',13,10,0
m_duplicate_parameter::
.dc.b '引数に同じデータが複数指定されています',13,10,0
m_environment_error::
.dc.b '環境定義ファイルに間違いがあります',13,10,0
m_file_read_error::
.dc.b '読み込みエラー',13,10,0
m_illegal_backslash::
.dc.b '\ の次の文字が違います',13,10,0
m_illegal_caret::
.dc.b '^ の次の文字が違います',13,10,0
m_illegal_character::
.dc.b '使えない文字があります',13,10,0
m_illegal_hz::
.dc.b '周波数の指定が違います',13,10,0
m_illegal_key_code::
.dc.b 'キーコードが違います',13,10,0
m_illegal_dollar::
.dc.b '$ の次の文字が違います',13,10,0
m_illegal_meta_char::
.dc.b 'メタ文字の指定が違います',13,10,0
m_illegal_parameter::
.dc.b '引数が違います',13,10,0
m_kept::
.dc.b '常駐しました',13,10,0
m_memory_shortage::
.dc.b 'メモリが不足しています',13,10,0
m_missing_parameter::
.dc.b '引数が足りません',13,10,0
m_missing_quote::
.dc.b '"…" が閉じていません',13,10,0
m_not_kept::
.dc.b '常駐していないか、常駐部分のバージョンが違います',13,10,0
m_other_version::
.dc.b '常駐部分のバージョンが違います、解除できません',13,10,0
m_other_version2::
.dc.b '常駐部分のバージョンが違います、設定を変更できません',13,10,0
m_released::
.dc.b '常駐を解除しました',13,10,0
m_rule_not_binded::
.dc.b '&rule が設定されていません',13,10,0
m_syntax_error::
.dc.b '文法が違います',13,10,0
m_target_not_binded::
.dc.b '&target が設定されていません',13,10,0
m_title::
.dc.b '鍵盤の魔法使い ~ ',PROGRAM,' version ',VERSION,13,10
.dc.b ' Copyright 1994,1995 by M.Kamada',13,10,0
m_too_long_chars::
.dc.b '&char の引数が 32 文字を超えています',13,10,0
m_too_long_file_name::
.dc.b 'ファイル名が長すぎます',13,10,0
m_too_many_assign::
.dc.b '&assign が多すぎます',13,10,0
m_too_many_break::
.dc.b '&break が多すぎます',13,10,0
m_too_many_char::
.dc.b '&char が多すぎます',13,10,0
m_too_many_code::
.dc.b '&code が多すぎます',13,10,0
m_too_many_copy::
.dc.b '© が多すぎます',13,10,0
m_too_many_den::
.dc.b '&den が多すぎます',13,10,0
m_too_many_int::
.dc.b '&int が多すぎます',13,10,0
m_too_many_lock::
.dc.b '&lock が多すぎます',13,10,0
m_too_many_meta::
.dc.b '&meta が多すぎます',13,10,0
m_too_many_names::
.dc.b '&name が多すぎます',13,10,0
m_too_many_parameters::
.dc.b '引数が多すぎます',13,10,0
m_too_many_prefix::
.dc.b '&prefix が多すぎます',13,10,0
m_too_many_programs::
.dc.b '&prog が多すぎます',13,10,0
m_too_many_reset::
.dc.b '&reset が多すぎます',13,10,0
m_too_many_sbreak::
.dc.b '&sbreak が多すぎます',13,10,0
m_too_many_suffix::
.dc.b '&suffix が多すぎます',13,10,0
m_too_many_unlock::
.dc.b '&unlock が多すぎます',13,10,0
m_undefined_name::
.dc.b 'キーネームまたはファイル名が違います',13,10,0
m_unknown_command::
.dc.b 'コマンドが違います',13,10,0
m_unknown_human::
.dc.b 'このバージョンの OS ではスイッチ -p が使えません',13,10,0
m_unknown_switch::
.dc.b 'スイッチが違います',13,10,0
m_unknown_patch_name::
.dc.b 'パッチネームが違います',13,10,0
m_usage::
.dc.b 13,10
.dc.b '使用法: ',PROGRAM,' [-{'
.dc.b 'a'
* .dc.b 'b','c'
.dc.b 'd','e'
* .dc.b 'f'
.dc.b 'i','j','l','m','n','p','r','s','t'
* .dc.b 'v'
.dc.b 'x'
.dc.b '}{0|1}…] [環境定義ファイル名 …]',13,10
.dc.b 13,10
.dc.b ' -a',9,'ASK68K version 3.01/3.02 の不具合の修正と仕様の変更を行います',13,10
* .dc.b ' -bN',9,'キーデータバッファを N キー分拡張します (0≦N≦256)',13,10
* .dc.b ' -c',9,'キークリックを PCM で鳴らします (KWClick.pcm)',13,10
.dc.b ' -d',9,'3キー以上のロールオーバーで発生するハード的な誤入力を抑制します',13,10
.dc.b ' -e',9,'環境定義ファイルに従ってキー配置を変更します (KeyWitch.env)',13,10
* .dc.b ' -f',9,'キーデータバッファフルを PCM で知らせます (KWFull.pcm)',13,10
.dc.b ' -i',9,'キー入力禁止モードを使います',13,10
.dc.b ' -j',9,'ジョイスティックの操作をキーボードでできるようにします',13,10
.dc.b ' -l',9,'キーに付いている LED の入れ替えを有効にします',13,10
.dc.b ' -m',9,'メタキーを使用します',13,10
.dc.b ' -n',9,'特定のキーのリピートを禁止します',13,10
.dc.b ' -p',9,'プログラム毎に異なるキー配置を使用します',13,10
.dc.b ' -r',9,'機能および常駐を解除するか、初期状態から設定し直します',13,10
.dc.b ' -s',9,'特定のキーを離したとき同時に押されていたキーのリピートを止めます',13,10
.dc.b ' -t',9,'テレビコントロールに使う組み合わせのキー入力を有効にします',13,10
* .dc.b ' -v',9,'現在の状態を表示します',13,10
.dc.b ' -x',9,'スキャンコードの入れ替えを有効にします',13,10
.dc.b 13,10
.dc.b '環境変数 KEYWITCH で、環境定義ファイルを検索するパスを指定できます',13,10
.dc.b 13,10
.dc.b 0
.even
.bss
.even
*以降はbaseからの相対アドレスで届かない可能性がある
********************************
*プログラムおわり
prog_tail::